package nodos;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

public class NodoListaArgumentos extends Nodo {

	private Nodo expresion;
	private NodoListaArgumentos listaArgumentos;

	public NodoListaArgumentos(Nodo expresion, NodoListaArgumentos listaArgumentos) {
		this.expresion = expresion;
		this.listaArgumentos = listaArgumentos;
	}

	@Override
	public DefaultMutableTreeNode getSubArbolVisual() {
		DefaultMutableTreeNode raiz=new DefaultMutableTreeNode("Lista de Argumentos");
		raiz.add(expresion.getSubArbolVisual());
		ArrayList<Nodo> argumentos=obtenerArgumentos();
		if(argumentos.size()!=0)
			for (Nodo ruta : argumentos) {
				raiz.add(ruta.getSubArbolVisual());
			}
		return raiz;
	}

	private ArrayList<Nodo> obtenerArgumentos(){
		ArrayList<Nodo> argumentos=new ArrayList<Nodo>();
		guardarRutas(argumentos, listaArgumentos);
		return argumentos;
	}
	private void guardarRutas(ArrayList<Nodo> rutas,NodoListaArgumentos raizSubArbol){
		if(raizSubArbol==null)
			return;
		else{
			rutas.add(raizSubArbol.expresion);
			guardarRutas(rutas, raizSubArbol.listaArgumentos);
		}
	}

	@Override
	public String traducir(int profundidad) {
		String codJava=expresion.traducir(profundidad);
		if(listaArgumentos!=null)
			codJava+=", "+listaArgumentos.traducir(profundidad);
		return codJava;
	}

}
